package com.hmdp.service;

import com.hmdp.dto.Result;
import com.hmdp.entity.Shop;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 虎哥
 * @since 2021-12-22
 */
public interface IShopService extends IService<Shop> {
    /**
     * 按id查询商铺信息
     *
     * @param id id
     * @return {@link Result}
     */
    Result queryById(Long id);

    /**
     * 更新商铺信息,先更新数据库,再删除缓存
     *
     * @param shop 商店
     * @return {@link Result}
     */
    Result update(Shop shop);


    /**
     * 保存商铺信息redis
     * @param id            id
     * @param expireSeconds 过期时间
     */
    void saveShop2Redis(Long id,Long expireSeconds);

    /**
     * 使用互斥锁查询商铺信息
     *
     * @param id id
     * @return {@link Shop}
     */
    Shop queryWithMutex(Long id);

    Result queryShopByType(Integer typeId, Integer current, Double x, Double y);

    Result saveShop(Shop shop);
}
